package dao

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func UpdateTaskDefine(taskId int64, taskDefineBytes []byte) error {
	// 打开文件，如果文件不存在则创建，采用覆盖写模式
	file, err := os.OpenFile(fmt.Sprintf("sqlite/task/%d.json", taskId), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
	if err != nil {
		return err
	}
	defer file.Close()

	// 创建一个带缓冲的 Writer
	writer := bufio.NewWriter(file)

	// 写入数据
	_, err = writer.Write(taskDefineBytes)
	if err != nil {
		return err
	}

	// 确保所有缓冲的数据都写入磁盘
	err = writer.Flush()
	if err != nil {
		return err
	}
	return nil
}

func QueryTaskDefineById(taskId int64) (string, error) {
	// 打开文件
	file, err := os.Open(fmt.Sprintf("sqlite/task/%d.json", taskId))
	if err != nil {
		// 文件不存在，说明该任务没有流程定义
		if os.IsNotExist(err) {
			return "", nil
		}
		return "", err
	}
	defer file.Close()

	// 一次性读取整个文件内容
	data, err := io.ReadAll(file)
	if err != nil {
		return "", err
	}
	return string(data), err
}

func DeleteTaskDefineById(taskId int64) error {
	filePath := fmt.Sprintf("sqlite/task/%d.json", taskId)
	if err := os.Remove(filePath); err != nil {
		if !os.IsNotExist(err) {
			return err
		}
	}
	return nil
}
